package com.heima.model.comment.pojos;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;

import java.io.Serializable;
import java.lang.reflect.Type;

/**
 * 评论实体类，映射 MongoDB 中的集合 ap_comment
 * 实现 Serializable 接口，支持对象的序列化和反序列化
 */
@Data // Lombok注解，自动生成Getter、Setter、toString、equals和hashCode方法
@Document(collection = "ap_comment") // 指定MongoDB集合名称
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ApComment implements Serializable {

    private static final long serialVersionUID = 1L; // 序列化版本号，用于反序列化校验

    private String id; // 评论ID（MongoDB主键）

    @Field("authorId") // 映射MongoDB中的字段 "authorId"
    private Integer authorId; // 用户ID

    @Field("authorName")
    private String authorName; // 用户名称

    @Field("entryId")
    private String entryId; // 文章ID或评论所属的目标ID

    @Field("type")
    private Integer type; // 类型, 0-文章评论，1-评论回复

    @Field("content")
    private String content; // 评论内容

    @Field("likes")
    private Integer likes; // 点赞数

    @Field("reply")
    private Integer reply; // 回复数

    @Field("flag")
    private Integer flag; // 标志位，用于记录状态（如是否删除）

    @Field("createdTime")
    private Long createdTime; // 创建时间，使用时间戳格式

    @Field("updatedTime")
    private Long updatedTime; // 更新时间，使用时间戳格式
}